package cn.cfanr.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    private EditText inputEditText;
    private TextView outputTextView;
    private RKLLMClient rkllmClient;
    private static final boolean IS_STREAMING = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        inputEditText = findViewById(R.id.inputEditText);
        outputTextView = findViewById(R.id.outputTextView);
        Button sendButton = findViewById(R.id.sendButton);
        rkllmClient = new RKLLMClient();

        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String userMessage = inputEditText.getText().toString();
                Log.e("AIBOX","begin =======================================================");
                userMessage = "你是一个智能家居控制指令解析器，负责将用户输入的自然语言控制指令，准确解析并转化为特定格式的JSON输出。输出的JSON结构包含以下字段：device：明确设备名称，可取值为“灯”“窗帘”“空调”“地暖”“加湿器”“空气净化器”“新风系统”“电视”“冰箱”“洗衣机”等。location：指出设备所处位置，例如“客厅”“卧室”“厨房”等常见空间。action：操作指令，其取值范围如下：“switch”：用于设备的打开或关闭操作。“brightness”：专门针对灯光设备，设置亮度，以百分比表示。“color”：针对灯光设备，设置颜色。“temperature”：用于空调、冰箱或地暖设备，设置温度。“mode”：适用于空调设备，设置运行模式，如“制冷”“制热”“通风”等。“volume”：用于音响或电视设备，设置音量。“channel”：针对电视设备，设置频道。value：操作对应的具体值，具体说明如下：当action为“switch”时，“1”代表打开，“0”代表关闭。当action为“mode”时，为具体的模式名称，如“制冷”“制热”等。其他情况下，为相应的数值。没有识别的字段，值用“”。示例：输入：把空调温度设置为 25 度。输出：{\"location\": \"\",\"device\": \"空调\",\"action\": \"temperature\",\"value\": 25}现在，请你解析用户输入的指令 "+ userMessage+ "，请按上述格式，仅返回 JSON：";



                if (userMessage.isEmpty()) {
                    Toast.makeText(MainActivity.this, "请输入问题", Toast.LENGTH_SHORT).show();
                    return;
                }

                rkllmClient.chatWithRKLLM(userMessage, IS_STREAMING, new RKLLMClient.OnRKLLMResponseListener() {
                    @Override
                    public void onSuccess(String userMessage, String modelResponse) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                               // outputTextView.append("Q: " + userMessage + "\n");
                                outputTextView.append("A: " + modelResponse + "\n\n");
                                Log.e("AIBOX","end =======================================================");
                                inputEditText.setText("");
                            }
                        });
                    }

                    @Override
                    public void onFailure(IOException e) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, "与RKLLM服务器通信时出错", Toast.LENGTH_SHORT).show();
                                e.printStackTrace();
                            }
                        });
                    }
                });
            }
        });
    }
}